
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<link rel=stylesheet href='include/hoj.css' type='text/css'>
</head>
<body>
<center>
<div style="width:90%; text-align:left">
<img src="image/logo.png"/>
</div>
<table width=96%> 
	<tr align="center" class='hd' valign="top">
				<th><a href="faqs.php">F.A.Qs</a></th>
		<th><a href="./bbs.php">Web Board</a></th>
		<th><a href="./">Home</a></th>
		<th><a href="./problemset.html">ProblemSet</a></th>
		<th><a href="./status.php">Status</a></th>
		<th><a href="./ranklist.php">Ranklist</a></th>
		<th><a href="./contest.php">Contest</a></th>
		<th><a href=loginpage.php>Login</a></th><th><a href=registerpage.php>Register</a></th>	</tr>
</table>
</center>
<center>
<div class="notice">
	<div>
		<B>Notice:</B>鉴于种种原因，本OJ自下周星期一（3月5号）开始不再全面开放，请各位做好善后事宜，谢谢合作。	</div>
</div>
</center>
</div>
<title>Problem 1792. -- [Ioi2008]TYPE PRINTER 打印机 -- 衡阳八中OJ离线版-2012-02-29</title><center><h2>1792: [Ioi2008]TYPE PRINTER 打印机</h2><span class=green>Time Limit: </span>10 Sec&nbsp;&nbsp;<span class=green>Memory Limit: </span>64 MB<br><span class=green>Submit: </span>26&nbsp;&nbsp;<span class=green>Solved: </span>0<br>[<a href='submitpage.php?id=1792'>Submit</a>][<a href='problemstatus.php?id=1792'>Status</a>][<a href='bbs.php?id=1792'>Discuss</a>]</center><h2>Description</h2><div class=content>
你需要利用一台可移动的打印机打印出N 个单词。这种可移动式打印机是一种老式打印机，它需要你将一些小的金属块（每个包含一个字母）放到打印机上以组成单词。然后将这些小金属块压在一张纸上以打印出这个词。这种打印机允许你进行下列操作：
&#8226;	在打印机当前词的末端（尾部）添加一个字母；
&#8226;	在打印机当前词的尾部删去一个字母（将打印机当前词的最后一个字母删去）。仅当打印机当前至少有一个字母时才允许进行该操作；
&#8226;	将打印机上的当前词打印出来。

初始时打印机为空，或者说它不含任何带字母的金属块。打印结束时，允许有部分字母留在打印机内。同时也允许你按照任意的次序打印单词。

由于每一个操作都需要一定时间，所以需要你尽可能减少所需操作的总数目（将操作的总数最小化）。

任务
要求你编写一个程序，给定所要打印的N 个单词，找出以任意次序打印所有单词所需操作的最小数目，并且输出一个这样的操作序列。 

限制
1 <= N <= 25,000	N为你需要打印的单词数目。

</div><h2>Input</h2><div class=content>你的程序必须从标准输入中读取下列数据：
&#8226;	第1行包含一个整数N, 表示你需要打印的单词数。
&#8226;	随后的N行中，每一行都包含一个单词。每个词仅由小写字母(‘a’ – ‘z’)组成，而且单词的长度为1到20个字母（包含1和20在内）。
所有单词都不相同。

</div><h2>Output</h2><div class=content>你的程序必须向标准输出写下列数据：
&#8226;	第1行包含一个整数M ，表示打印这N 个单词所需操作的最小数目。
&#8226;	随后的M行中，每一行必须包含一个字符。这些字符描述所做操作的序列。每个操作必须按如下描述：
o	添加一个字母用该字母的小写形式表示
o	删去一个字母用字符‘-‘(减号, ASCII 码 45)表示 
o	打印当前词用字符‘P’（大写字母P）表示

</div><h2>Sample Input</h2>
			<div class=content><span class=sampledata>3<br />
print<br />
the<br />
poem<br />
</span></div><h2>Sample Output</h2>
			<div class=content><span class=sampledata>20<br />
t<br />
h<br />
e<br />
P<br />
-<br />
-<br />
-<br />
p<br />
o<br />
e<br />
m<br />
P<br />
-<br />
-<br />
-<br />
r<br />
i<br />
n<br />
t<br />
P<br />
</span></div><h2>HINT</h2>
			<div class=content><p>有总计为40分的测试数据，其中N不会超过18。<br />
</p></div><h2>Source</h2>
			<div class=content><p><a href='problemset.html?search='></a></p></div><center>[<a href='submitpage.php?id=1792'>Submit</a>][<a href='problemstatus.php?id=1792'>Status</a>][<a href='bbs.php?id=1792'>Discuss</a>]</center>﻿<br>

<a href="./"><span class=red>HOME</span></a>
<a href="javascript:history.go(-1)"><span class=red>Back</span></a>

<hr>
<center>
	<div class="footer">
			<a href=setlang.php?lang=ko>한국어</a>&nbsp;
		<a href=setlang.php?lang=cn>中文</a>&nbsp;
		<a href=setlang.php?lang=fa>فارسی</a>&nbsp;
		<a href=setlang.php?lang=en>English</a>&nbsp;
		<a href=setlang.php?lang=th>ไทย</a>
	<br>		<div>版权所有 &copy;2008-2012 WaterPark Organization. | <script src="http://s21.cnzz.com/stat.php?id=2982771&web_id=2982771" language="JavaScript"></script>
</div>
		<div>Based on opensource project <a href="http://hustoj.googlecode.com">hustoj</a>.</div>
	</div>
</center>
</body>
</html>
